package com.intel.diceros.test.aes; import com.intel.diceros.provider.DicerosProvider; import com.intel.diceros.provider.util.Arrays; import com.intel.diceros.test.util.Entity; import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.security.*; public class TestCipher { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("/tmp/Entity0"); ObjectInputStream ois = new ObjectInputStream(fis); Entity entity = (Entity)ois.readObject(); byte[] encryptResult = new byte[entity.input.length+18]; byte[] decryptResult = new byte[entity.input.length]; Security.addProvider(new DicerosProvider()); Cipher cipher = Cipher.getInstance("AES/MBCBC/PKCS5Padding", "DC"); IvParameterSpec ivSpec = new IvParameterSpec(entity.iv); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(entity.key, "AES"), ivSpec); cipher.doFinal(entity.input, 0, entity.input.length, encryptResult, 0); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(entity.key, "AES"), ivSpec); decryptResult = cipher.doFinal(entity.encontent); /* if (Arrays.areEqual(encryptResult, entity.encontent)) { System.out.println("encry same"); } else { System.out.println("encry error"); }*/ if (Arrays.areEqual(decryptResult, entity.input)) { System.out.println("decry right"); } else if (Arrays.areEqual(decryptResult, entity.decontent)){ System.out.println("same error"); } else { System.out.println("error"); } printArray(entity.decontent); printArray(decryptResult); printArray(entity.input); System.out.println(); printArray(entity.encontent); printArray(encryptResult); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (InvalidAlgorithmParameterException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (ShortBufferException e) { e.printStackTrace(); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } } public static void printArray(byte[] barray) { System.out.print("content: "); for (int i = 0; i < barray.length; i++) { System.out.print(barray[i] + "\t"); } System.out.println(" size:" + barray.length); } }